package com.axxc.jpa.pattendegign.command;

/**
 * @ClassName TestCommandPatten
 * @Description //TODO 请描述该类的作用
 * @author xxc
 * @data 2018年9月16日下午9:46:20
 * @see {@link http://gitee.com/biuabiu/ }
 */
public class TestCommandPatten {

	/**
	 * <p>
	 * 有点装饰,适配模式再代理的感觉?
	 * <p>
	 * 这个模式属于行为型
	 * <p>
	 * 或许这就是设计模式分类的区别
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		Peddler peddler = new Peddler();
		Command appleCommand = new AppleCommand(peddler);// 卖苹果的小贩,包装
		Command bananaCommand = new BananaCommand(peddler);// 卖香蕉的小贩

		WaiterInvoke waiter = new WaiterInvoke();// 服务者,具体的invoke,再包装
		waiter.setCommand("apple", appleCommand);// 实现添加
		waiter.setCommand("banana", bananaCommand);

		waiter.sail("apple");
		waiter.sail("banana");

		waiter.RemoveCommand("apple");// 实现移除

		waiter.sail("apple");
		

	}
}
